package com.ztz.basedemo;

import android.support.annotation.LayoutRes;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
/**
 * <p> 此父类会劫持setContentView(resId)方法，在子类View外部再次包括多一个父View
 * <p> 插入多种状态布局如：加载中，空，加载错误等布局
 * <p> 具体方法请看：
 * <p> showLoadingView()
 * <p> showEmptyView()
 * <p> showErrorView()
 * <p> showContentView()
 * <p> 默认状态为showLoadingView()
 */
public class BaseActivity extends AppCompatActivity {
    LinearLayout ll_progress;
    LinearLayout ll_empty;
    LinearLayout ll_error;
    @Override
    public void setContentView(@LayoutRes int layoutResID) {
        super.setContentView(layoutResID);
        FrameLayout rootView=(FrameLayout) LayoutInflater.from(this).inflate(R.layout.activity_base,null);
        ll_progress=rootView.findViewById(R.id.ll_progress);
        ll_empty=rootView.findViewById(R.id.ll_empty);
        ll_error=rootView.findViewById(R.id.ll_error);
        View childView=LayoutInflater.from(this).inflate(layoutResID,rootView,false);
        rootView.addView(childView,0);//设置0 防止子布局被覆盖
        setContentView(rootView);
    }
    /**
     * 显示加载布局
     * protected 利于子类访问
     */
    protected void showLoadView(){
       runOnUiThread(new Runnable() {
           @Override
           public void run() {
               if(ll_progress!=null){
                   ll_progress.setVisibility(View.VISIBLE);
               }
           }
       });
    }
    /**
     * 显示空布局
     */
    protected void showEmptyView(){
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if(ll_progress!=null){
                    ll_progress.setVisibility(View.GONE);
                }
                if(ll_empty!=null){
                    ll_empty.setVisibility(View.VISIBLE);
                }
                if(ll_error!=null){
                    ll_error.setVisibility(View.GONE);
                }
            }
        });
    }
    /**
     * 显示加载失败布局
     */
    protected void showErrorView(){
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if(ll_progress!=null){
                    ll_progress.setVisibility(View.GONE);
                }
                if(ll_empty!=null){
                    ll_empty.setVisibility(View.GONE);
                }
                if(ll_error!=null){
                    ll_error.setVisibility(View.VISIBLE);
                }
            }
        });
    }
    /**
     * 显示正确内容布局
     */
    protected void showContentView(){
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if(ll_progress!=null){
                    ll_progress.setVisibility(View.GONE);
                }
                if(ll_empty!=null){
                    ll_empty.setVisibility(View.GONE);
                }
                if(ll_error!=null){
                    ll_error.setVisibility(View.GONE);
                }
            }

        });
    }
}
